]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shellEntry: Set the input-purpose property for password entries
authorRui Matos <tiagomatos@gmail.com>
Fri, 10 May 2013 01:35:05 +0000 (03:35 +0200)
committerRui Matos <tiagomatos@gmail.com>
Fri, 10 May 2013 10:42:18 +0000 (12:42 +0200)
This way input methods can disable themselves automatically for
entries holding passwords.

https://bugzilla.gnome.org/show_bug.cgi?id=700043

js/ui/shellEntry.js

index e9a94a6923fdb40b56d83fbc20ddc09ee69205e9..b7251d13517d236afa5f633935ca642ffb427816 100644 (file)
@@ -14,9 +14,7 @@ const EntryMenu = new Lang.Class({
     Name: 'ShellEntryMenu',
     Extends: PopupMenu.PopupMenu,
 
-    _init: function(entry, params) {
-        params = Params.parse (params, { isPassword: false });
-
+    _init: function(entry) {
         this.parent(entry, 0, St.Side.TOP);
 
         this.actor.add_style_class_name('entry-context-menu');
@@ -37,8 +35,6 @@ const EntryMenu = new Lang.Class({
         this._pasteItem = item;
 
         this._passwordItem = null;
-        if (params.isPassword)
-           this._makePasswordItem();
 
         Main.uiGroup.add_actor(this.actor);
         this.actor.hide();
@@ -53,19 +49,21 @@ const EntryMenu = new Lang.Class({
     },
 
     get isPassword() {
-       return this._passwordItem != null;
+        return this._passwordItem != null;
     },
 
     set isPassword(v) {
-       if (v == this.isPassword)
-           return;
-
-       if (v)
-           this._makePasswordItem();
-       else {
-           this._passwordItem.destroy();
-           this._passwordItem = null;
-       }
+        if (v == this.isPassword)
+            return;
+
+        if (v) {
+            this._makePasswordItem();
+            this._entry.input_purpose = Gtk.InputPurpose.PASSWORD;
+        } else {
+            this._passwordItem.destroy();
+            this._passwordItem = null;
+            this._entry.input_purpose = Gtk.InputPurpose.FREE_FORM;
+        }
     },
 
     open: function(animate) {
@@ -155,7 +153,10 @@ function addContextMenu(entry, params) {
     if (entry.menu)
         return;
 
-    entry.menu = new EntryMenu(entry, params);
+    params = Params.parse (params, { isPassword: false });
+
+    entry.menu = new EntryMenu(entry);
+    entry.menu.isPassword = params.isPassword;
     entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry });
     entry._menuManager.addMenu(entry.menu);